<?php
#!/bin/bash

/**
 * User: hzbskak
 * Date: 2020/1/9 - 14:21
 */

namespace app\admin\controller;

use app\admin\model\BsMenuModel;
use app\admin\model\CommonModel;
use app\admin\model\PlAreaModel;
use app\admin\model\PlAreaTypeModel;

/**
 * 国家城市
 * Class Area
 * @package app\admin\controller
 */
class Area extends Common
{
    public $url = 'admin/area/area';

    /**
     * 国家/城市展示
     * @return mixed|\think\response\Json
     * @throws \think\exception\DbException
     */
    public function area()
    {
//        error_reporting(0); // 关闭没有传参带来的报错 84l $map['p.en_name'] = [ 'like', @"%$session[en_name]%"];
        $translate = [
            'bh' => 'id',
            'mc' => 'name',
            'ywmc' => 'en_name',
            'pxh' => 'sort',
            'gj' => 'is_country',
            'sd' => 'is_lock',
            'xs' => 'is_hidden',
            'py' => 'pinyin',
            'pyjx' => 'spinyin',
            'bzsm' => 'remark',
        ];

        $url = CommonModel::getUrl(); // 当前操作的绝对路径
        $order = BsMenuModel::getAdminSettingByUrl( $url); // 获取后台用户列排序设置

        $post_data = input( 'param.');  // 接受参数
//        Session::clear();
        $area = PlAreaModel::getAreaData( $post_data); // 获取数据
//        echoJson( $area);
        $page = $area->render();
        $areas = $area->toArray()['data'];

        if( request()->isAjax()) // 异步
        {
            $data['area'] = $areas;
            $data['page'] = $page; // 分页的按钮 
            $data['order'] = $order;
            return json( $data);
        }

        $this->assign( 'page', $page);
        $this->assign( 'area', $areas);
        $this->assign( 'order', $order);
        $this->assign( 'url', $url);
        $this->assign( 'translate', $translate);

        return $this->fetch( 'hotel/area');
    }

    /**
     * 获取下一级数据
     * @date 2020年1月17日17:45:18
     *
     * @return mixed
     * @throws \think\exception\DbException
     */
    public function getSonData()
    {
        $order = BsMenuModel::getAdminSettingByUrl( $this->url); // 获取用户配置

        $area = PlAreaModel::getSonData( input( 'param.')); // 获取下一级数据
        $page = $area->render();
        $areas['area'] = $area->toArray()['data'];
        if( !$areas['area'])
        {   // 没有数据返回ID值
            $areas['area'] = input( 'param.id');
        }
        $areas['page'] = $page;
        $areas['order'] = $order;
        $areas['session'] = session( input( 'param.id'));

        return $areas;
    }

    /**
     * 获取上一级数据
     * @return mixed
     * @throws \think\exception\DbException
     */
    public function getParentData()
    {
        $order = BsMenuModel::getAdminSettingByUrl( $this->url); // 获取用户配置

        $area = PlAreaModel::getParentData( input( 'param.')); // 获取上一级数据
        $page = $area->render();

        $areas['area'] = $area->toArray()['data'];
        if( !$areas['area'])
        {   // 没有数据返回父级ID
            $areas['area'] = PlAreaModel::getParentID( input( 'param.id'));
        }
        $areas['page'] = $page;
        $areas['order'] = $order;
        $areas['session'] = session( PlAreaModel::getParentID( input( 'param.id')));

        return $areas;
    }

    /**
     * 国家/城市新增或修改
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public function areaShow()
    {
        $id = input( 'param.id'); // 修改时
        $parent = input( 'param.parent'); // 新增时

        $list = PlAreaModel::getAreaByID( $id); // 获取地区表信息
        $area_class = PlAreaTypeModel::getAllTyIDName(); // 获取地区分类表信息

        $this->assign( 'parent', $parent);
        $this->assign( 'list', $list);
        $this->assign( 'areaClass', $area_class);

        return $this->fetch( '/hotel/area-show');
    }

    /**
     * 新增国家/城市
     * @date 2020年1月14日17:43:25
     * @return \think\response\Json
     * @throws \think\Exception
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     * @throws \think\exception\PDOException
     */
    public function addArea()
    {
        return json( ( new PlAreaModel())->addArea( input( 'param.')));
    }

    /**
     * 修改国家/城市
     * @date 2020年1月15日10:07:53
     * @return \think\response\Json
     * @throws \think\Exception
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     * @throws \think\exception\PDOException
     */
    public function editArea()
    {
        return json( ( new PlAreaModel())
            ->editArea( input( 'param.'), input( 'param.id')));
    }

    /**
     * 逻辑删除国家/城市
     * @date 2020年1月15日12:50:12
     * @return \think\response\Json|\think\response\Redirect
     * @throws \think\Exception
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public function isDeleteArea()
    {
        ( new PlAreaModel())->isDeleteArea( input('param.id'));

        $parent_id = PlAreaModel::getParentID( input('param.id'));

        return redirect( '/admin/area/area?parent=' . $parent_id);
    }

    /**
     * 批量逻辑删除国家/城市
     * @date 2020年1月15日18:08:27
     * @return \think\response\Json
     */
    public function isDeleteAllArea()
    {
        ( new PlAreaModel())->isDeleteAllArea( input( 'param.'));

        return json( [ 'msg' => '批量删除成功', 'code' => 1]);
    }

























































































}